package com.cskaoyan.datasource;

import com.cskaoyan.jdbc.util.JDBCUtils;

import java.sql.Connection;
import java.util.LinkedList;

/**
 * 创建日期: 2022/06/05 11:06
 *
 * @author ciggar
 *
 * // 1. 干掉魔法值
 *
 * // 2. 自动扩容
 *
 *  // 阿里巴巴开发手册
 *  // 王道编程规范
 *
 */
public class MyConnectionPoolV2 {

    // 声明一个存放连接的容器  从尾部拿，从头部存
    static LinkedList<Connection> linkedList;


    // 初始值
    static int INIT_SIZE = 10;

    // 最小空闲连接
    static int MIN_SIZE = 3;


    // 扩容大小
    static int INCREMENT_SIZE = 5;






    static {
        // 初始化
        linkedList = new LinkedList<Connection>();

        addCapacity(INIT_SIZE);


    }


    // 获取连接
    public static Connection getConnection(){

        // 检查一下是否应该扩容
        if (linkedList.size() <=  MIN_SIZE){
            addCapacity(INCREMENT_SIZE);
        }

        Connection connection = linkedList.removeLast();

        return connection;


    }




    // 返回连接
    public static void returnConnection(Connection connection){

        linkedList.addFirst(connection);

    }


    // 增加连接
    public static void addCapacity(int count){

        if (count <= 0) return;

        for (int i = 0; i < count; i++) {
            linkedList.add(JDBCUtils.getConnection());
        }

    }
}
